package com.eastfair.venuebooking.service;

import com.eastfair.boot.service.SuperService;
import com.eastfair.venuebooking.dto.ExhibitionSpaceDTO;
import com.eastfair.venuebooking.dto.QuotationDetailDTO;
import com.eastfair.venuebooking.entity.ExhibitionSpace;
import com.eastfair.venuebooking.vo.ExhibitionSpaceVO;

import java.util.List;

/**
 * <p>
 * 业务接口
 * 展会预定场地表
 * </p>
 *
 * @author gj
 * @date 2022 -07-22
 */
public interface ExhibitionSpaceService extends SuperService<ExhibitionSpace> {

    /**
     * 查询场地列表VO.
     *
     * @param query the query
     * @return the list
     */
    List<ExhibitionSpaceVO> listExhibitionSpaceVOs(ExhibitionSpaceDTO query);

    /**
     * 查询展会场地列表.
     *
     * @param query the query
     * @return the list
     */
    List<ExhibitionSpace> listExhibitionSpaces(ExhibitionSpaceDTO query);

    /**
     * 展会ID与场地ID列表 查询 场地.
     *
     * @param list the list
     * @return the list
     */
    List<ExhibitionSpace> listExhibitionSpacesByExhibitionId(List<ExhibitionSpaceDTO> list);

    /**
     * 保存展会场地.
     *
     * @param saveDTO the save dto
     * @return the boolean
     */
    boolean saveExhibitionSpace(ExhibitionSpaceDTO saveDTO);

    /**
     * 批量保存展会场地.
     *
     * @param list the list
     * @return the boolean
     */
    boolean saveBatchExhibitionSpace(List<ExhibitionSpaceDTO> list);

    /**
     * 通过报价书详情列表批量保存展会场地.
     *
     * @param list         the list
     * @param exhibitionId the exhibition id
     * @return the boolean
     */
    boolean saveBatchByQuotationDetailList(List<QuotationDetailDTO> list, Long exhibitionId);

    /**
     * 展会ID与场地ID列表删除展会场地.
     *
     * @param exhibitionId the exhibition id
     * @param spaceIdList  the space id list
     * @return the boolean
     */
    boolean removeBatchByExhibitionIdAndSpaceIds(Long exhibitionId, List<Long> spaceIdList);

    /**
     * 报价书ID列表删除展会场地.
     *
     * @param quotationIds the quotation ids
     * @return the boolean
     */
    boolean removeBatchByQuotationIds(List<Long> quotationIds);
}
